home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Texteditors / XDME / include / debug.h < prev    next >
C/C++ Source or Header  |  1996-09-26  |  3KB  |  111 lines

  1. /*
  2.  * mydebug.h - #include this file sometime after stdio.h
  3.  * Set MYDEBUG to 1 to turn on debugging, 0 to turn off debugging
  4.  */
  5. #ifndef MYDEBUG_H
  6. #define MYDEBUG_H
  7.  
  8. #ifndef MYDEBUG
  9. #define MYDEBUG  0
  10. #endif
  11.  
  12. #if MYDEBUG
  13. /*
  14.  * MYDEBUG User Options
  15.  */
  16.  
  17. /* Set to 1 to turn second level D2(bug()) statements */
  18. #define DEBUGLEVEL2    1
  19.  
  20. /* Set to a non-zero # of ticks if a delay is wanted after each debug message */
  21. #define DEBUGDELAY        0
  22.  
  23. /* Always non-zero for the DDx macros */
  24. #define DDEBUGDELAY        50
  25.  
  26. /* Set to 1 for serial debugging (link with debug.lib) */
  27. #define KDEBUG        1
  28.  
  29. /* Set to 1 for parallel debugging (link with ddebug.lib) */
  30. #define DDEBUG        0
  31.  
  32. #endif /* MYDEBUG */
  33.  
  34.  
  35. /* Prototypes for Delay, kprintf, dprintf. Or use proto/dos.h or functions.h. */
  36.  
  37. /*
  38.  * D(bug()), D2(bug()), DQ((bug()) only generate code if MYDEBUG is non-zero
  39.  *
  40.  * Use D(bug()) for general debugging, D2(bug()) for extra debugging that
  41.  * you usually won't need to see, DD(bug()) for debugging statements that
  42.  * you always want followed by a delay, and DQ(bug()) for debugging that
  43.  * you'll NEVER want a delay after (ie. debugging inside a Forbid, Disable,
  44.  * Task, or Interrupt)
  45.  *
  46.  * Some example uses (all are used the same):
  47.  * D(bug("about to do xyz. variable = $%lx\n",myvariable));
  48.  * D2(bug("v1=$%lx v2=$%lx v3=$%lx\n",v1,v2,v3));
  49.  * DQ(bug("in subtask: variable = $%lx\n",myvariable));
  50.  * DD(bug("About to do xxx\n"));
  51.  *
  52.  * Set MYDEBUG above to 1 when debugging is desired and recompile the modules
  53.  *  you wish to debug.    Set to 0 and recompile to turn off debugging.
  54.  *
  55.  * User options set above:
  56.  * Set DEBUGDELAY to a non-zero # of ticks (ex. 50) when a delay is desired.
  57.  * Set DEBUGLEVEL2 nonzero to turn on second level (D2) debugging statements
  58.  * Set KDEBUG to 1 and link with debug.lib for serial debugging.
  59.  * Set DDEBUG to 1 and link with ddebug.lib for parallel debugging.
  60.  */
  61.  
  62.  
  63. /*
  64.  * Debugging function automaticaly set to printf, kprintf, or dprintf
  65.  */
  66.  
  67. #if KDEBUG
  68. extern __stdargs void kprintf(UBYTE *fmt,...);
  69. #define bug kprintf
  70. #else
  71. #if DDEBUG
  72. extern __stdargs void dprintf(UBYTE *fmt,...);
  73. #define bug dprintf
  74. #else    /* else changes all bug's to printf's */
  75. #define bug printf
  76. #endif
  77. #endif
  78.  
  79. /*
  80.  * Debugging macros
  81.  */
  82.  
  83. /* D(bug(       delays DEBUGDELAY if DEBUGDELAY is > 0
  84.  * DD(bug(      always delays DDEBUGDELAY
  85.  * DQ(bug(      (debug quick) never uses Delay.  Use in forbids,disables,ints
  86.  * The similar macros with "2" in their names are second level debugging
  87.  */
  88. #if MYDEBUG    /* Turn on first level debugging */
  89. #define D(x)  (x); if(DEBUGDELAY>0) Delay(DEBUGDELAY)
  90. #define DD(x) (x); Delay(DDEBUGDELAY)
  91. #define DQ(x) (x)
  92. #if DEBUGLEVEL2 /* Turn on second level debugging */
  93. #define D2(x)  (x); if(DEBUGDELAY>0) Delay(DEBUGDELAY)
  94. #define DD2(x) (x); Delay(DDEBUGDELAY)
  95. #define DQ2(x) (x)
  96. #else  /* Second level debugging turned off */
  97. #define D2(x) ;
  98. #define DD2(x) ;
  99. #define DQ2(x) ;
  100. #endif /* DEBUGLEVEL2 */
  101. #else  /* First level debugging turned off */
  102. #define D(x) ;
  103. #define DQ(x) ;
  104. #define D2(x) ;
  105. #define DD(x) ;
  106. #endif
  107.  
  108.  
  109. #endif /* MYDEBUG_H */
  110.  
  111.